"""
__author__ = '霍格沃兹测试开发学社'
__desc__ = '更多测试开发技术探讨，请访问：https://ceshiren.com/t/topic/15860'
"""
from datetime import datetime

from sqlalchemy import *
from sqlalchemy.orm import relationship

from do.plan_do import PlanDo
from server import db

# 创建构建记录表
class BuildDo(db.Model):
    # 表名
    __tablename__ = "build"
    # 用例ID 用例的唯 一标识
    id = db.Column(Integer, primary_key=True)
    # 计划id，不为空，并且唯一,外键写在多的一方，比如 plan-> build 是一对多，那么外键就在build这方。
    plan_id = db.Column(Integer, ForeignKey('plan.id', ondelete='CASCADE'))
    # 报告地址,限定 80个字符 ，不为空，并且唯一
    report = db.Column(String(80), nullable=False)
    # 生成时间格式, 创建时间，通常不需要手动传入，在写入记录的时候自动生成
    create_time = Column(DateTime, nullable=True, default=datetime.now().strftime('%Y-%m-%d %H:%M:%S'))
    # 参数1： 关联的另外一个业务表类名， 参数2： 反射别名
    plan: PlanDo = relationship("PlanDo", backref="build")

    def as_dict(self):
        return {
            "id": self.id,
            "plan_id": self.plan_id,
            "report": self.report,
            "create_time": str(self.create_time),
            "plan": self.plan.as_dict(),
        }
